package org.example.classtopia.Mapper;

import org.example.classtopia.Model.Entity.Report;
import org.example.classtopia.Model.vo.ReportListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ReportMapper {

    // 插入新举报
    int insertReport(Report report);

    // 根据ID查询举报
    Report selectReportById(@Param("id") Long id);

    // 根据举报人ID查询举报列表
    List<ReportListVO> selectReportsByReporterId(@Param("reporterId") Long reporterId,
                                                 @Param("offset") int offset,
                                                 @Param("limit") int limit);

    // 分页查询所有举报（管理员用）
    List<ReportListVO> selectReportsPage(@Param("status") String status,
                                         @Param("targetType") String targetType,
                                         @Param("offset") int offset,
                                         @Param("limit") int limit);

    // 统计举报总数
    int countReports(@Param("status") String status,
                     @Param("targetType") String targetType);

    // 统计用户举报总数
    int countReportsByReporterId(@Param("reporterId") Long reporterId);

    // 更新举报处理结果
    int updateReportHandle(Report report);

    // 检查是否重复举报
    int checkDuplicateReport(@Param("reporterId") Long reporterId,
                            @Param("targetType") String targetType,
                            @Param("targetId") Long targetId);
}
